package com.lhnstart.learn.recursion;

/**
 * 汉诺塔
 *
 * @author lhn
 * @date 2022/11/13 22:41
 * @since 1.0.0
 **/
public class Tower {

    public static void main(String[] args) {
        new TowerDome().move(3, 'a', 'b', 'c');
    }

}

class TowerDome {

    // num 表示要移动的个数,a,b,c 分别表示 a 塔,b 塔,c 塔
    public void move(int num, char a, char b, char c) {// 3 abc
        if (num == 1) {
            System.out.println(a + " ->" + c);
        } else {
            // 如果有多个盘,可以看成两个,最下面的和上面的所有盘(num - 1)
            // 先移动上面所有的盘到 b 借助 c
            move(num - 1, a, c, b);//2 acb 1 acb
            // 把最下面的这个盘, 移动到 c
            System.out.println(a + "->" + c);
            // 再把 b 塔的所有盘, 移动到 c,借助 a
            move(num - 1, b, a, c);
        }
    }

}